23

» WarCraft 3 / Изменить описание способности

Похожие вопросы:

ответ
можно либо заменять юнита, либо химичить с тексттагами(то есть сделать систему имен игровых обьектов на тексттагах), ещё есть функция для смены имени игрока
код
native SetPlayerName            takes player whichPlayer, string name returns nothing
предметам имена изменять нельзя
способности могут быть с таким же успехом удалены, добавлены
этим
native UnitAddAbility               takes unit whichUnit, integer abilityId returns boolean

native UnitRemoveAbility            takes unit whichUnit, integer abilityId returns boolean
подробнее насчет предметов, думаю можно похимичить с кастом велью, устанавливать его
функциями
native          SetItemUserData takes item whichItem, integer data returns nothing

native          GetItemUserData takes item whichItem returns integer
и
функциями
native S2I  takes string s returns integer

native I2S  takes integer i returns string
конвертировать, потом выводить строки на экран через
это
native DisplayTextToPlayer          takes player toPlayer, real x, real y, string message returns nothing
с таким же успехом можно использовать хеш-таблицы, для аттача описания к чему-либо.
Ещё есть вариант, с описанием предметов и способностей в квестах.
В общем без гемора, и написания левых систем никак)
ответ
~8gabriel8:
Проблема оказалась в том, что в игре теперь вместо прежнего выбора Aneu используется способность Anei, которой нет в редакторе у меня и, наверное, у тебя.
Название и описание для неё нужно редактировать в файле Units\NeutralAbilityStrings.txt, в карте пример xgm.guru/files/100/221818/comments/412020/0.w3x, экспортируешь из неё файл, ищешь строки и редактируешь их, импортируешь себе.
ответ
Да.
Открываешь карту MPQ Editor, извлекаешь оттуда файл war3map.wts, там хранится почти весь текст карты.
Найти описание юнита можно по его имени ли равкоду через поиск текста. Подробное описание называется Ubertip, подсказка (то, что над стоимостью юнита) - Tip. Там же можно изменить горячую клавишу (Hotkey).
Редактируешь и изменённый файл импортируешь назад в карту тем же MPQ Editor, перед этим лучше сохранить старую версию war3map.wts или всей карты.
Есть альтернативный способ: в самом редакторе Файл - Экспортировать Строки. Редактируешь и изменённый файл импортируешь аналогичным способом (в редакторе): Файл - Импортировать Строки.

war3map.wts имеет определённый формат, перенос строки через CRLF и кодирование UTF-8-BOM. Если что-то из этого изменить, то файл будет нечитабельным для карты, и при следующем сохранении редактор просто его перезапишет, обнуляя все текстовые изменения.

Ну и почему ресурс пропал из ленты проектов?

23

» WarCraft 3 / Импорт звуков

Похожие вопросы:

ответ
при импорте звука
Проверь дискретизацию и качество. Должно быть, как у стандартных звуков.
ответ
меня после импорта вес переваливает более чем за 8МБ :(
Потому что звук весит более 7 мегабайт. Нужно сжимать, есть даже онлайн-сервисы.
ответ
Настройки в редакторе звуков, флаг "Позиционный" проверь
+проверь битность импортируемого мп3. Как раз в статьях и будет ответ!
ответ
Capitan Alex:
Уже нашел, Редактор звука Ctrl+f Flashback1

23

» WarCraft 3 / Что за ошибка?

Похожие вопросы:

ответ
XGM Bot:
Похожие вопросы:

ответ
Меню RtC - убери галочку с enable.
ответ
экстрасенсы свалили на Гавайи
ответ
  1. Если юзал JNGP, залезь в папку backups - мб там остались работоспособные недавние копии
  2. Попробуй MPQ Editor, мб удастся что-то вытащить, чтобы не совсем с нуля начинать, если карта таки сломалась
  3. Вообще если карта долго грузится, это не факт, что она не загрузится вообще (хотя, судя по описанию ситуации, вряд ли это твой случай)
ответ
Steal nerves:
Короче порылся в ХГМ, потыкал, все испробывал, и сам нашел ответ, вот несколько моментов для того, чтобы заработал:
  1. Требуется установленный Warcraft 3: The Frozen Throne последней версии 1.26a. Скачайте нормальный варкрафт 3, а то попадаются урезанные или нерабочие версии. Лучше оригинальную версии приобрести, и обновить. Хотя пиратки тоже неплохи. Вот использую сборкой от R.G. Mechanics
  2. Путь к программе НЕ ДОЛЖЕН содержать русских символов
  3. Совершайте установку в отдельную от Warcraft 3 папку
  4. Рекомендуется приостановить антивирусные программы до установки, потом выполнить установку, затем добавить папку c JNGP в исключения, и потом только снова включить антивирусы. Эта программа вторгается в процесс worldedit.exe, поэтому может считаться вредоносной
  5. Не трогайте файл worldedit121.exe, он должен быть и в папке игры и в папке JNGP
  6. Сначала "Сохранить карту", только потом "Проверка карты", а ещё иногда бывает лучше сохранять пару раз
Выше, это стандартное описание для работы. Если не сработает, пробуем вот, что:
  1. Выставляем оптимальные настройки к JNGP, указанные на скрине (см. ссылку) xgm.guru/forum/showthread.php?t=13118 Обычно, эти настройки должны быть изначально после установки JNGP (ну мало ли пригодятся)
Теперь суть моей проблемы (не знаю, что из этих ниже пунктов сработало, но сработало):
  1. Я установил игру и JNGP на рабочий стол. Потому что на диске С, в папках типа Program Files.(x86) и др. блокирует браундмер. Обычно требует назойливо для работы права администратора, очень раздражает. Но сомневаюсь, что заработало из-за этого. Раньше не мешало нисколько.
  2. Запустить JNGP в режим совместимости. Заходим в свойство exe-шника. Поставил семерку.
  3. Если UMS изначально включен, то выключить его и включить (Enable UMS). Потом перезапустить WE. Скорее всего из-за него.
Из-за UMS также бывают ошибки: могут выскачить 2-3 окна : что отсутствует TriggerClearActions и layerAll. Когда пропускаешь эти окна, просто нажав на ок, затем появляется ошибка с памятью и уже потом закрывается редактор. Происходят такие ошибки, если пытаешься открыть обычным редактором карту, отредактированную в JNGP. Такая ошибка происходит, если некорректно настроен UMS (выкл. потом вкл.). Такая ошибка происходит, если открыть обычным редактором взломанную карту, которая наверняка сделана в UMS и использует необычный jass и прочие преимущества JNGP. Ошибки с UMS могут иногда происходить, поэтому скорее всего пункт 10 поможет
  1. Если UMS перестает работать (некорректно работает), а 10 пункт не помогает. То есть плагин UMS по каким-то причинам не запускается, а JNGP стоит галочка напротив UMS (говорит, что включен). Короче узнать, что он запущен, можно при открытий редактора вместо стандартного окна выскакивает окно UMS. Если не выскакивает, надо попробовать завести снова работать. Плагин может по каким-то причинам сломаться (один раз баловался в настройках JNGP). Пробуйте потом удалить JNGP и потом заново переустановить. Или выкл. и вкл, UMS затем выйти из jngp, удалить и заново переустановить
пп
ответ
Не особо шарю, но :
-отключить антивирус
-переустанови jngp

ответ
В случае вылета игры, следует всегда прикреплять к вопросу отчет об ошибке.
Он находится в: "%папка_с_игрой%\Errors\%дата_вылета% Crash.txt".
Вылетает при загрузке данных о предметах.
Удали все предметы и проверь, не перестанет ли вылетать.
Если перестанет, то удаляй предметы по одному, пока не найдешь виновника.
Еще не помешала бы сама карта/кампания, которую нужно было прикрепить вместе с отчетом с самого начала.
ответ
Name Legion:
я тупо тыкаю на нем и сразу выскакивает это ошибкка, он даже не кастуется
кажется проблема в... ну я наверное понял...я сейчас не с компьютера пишу, как буду дома покажу
исправил ошибку...область воздействия не должно превышать размера карты, в этом ошибка была, спасибо
ответ
Лучше писать код на Sublime Text 3 с подсветкой xgm.guru/p/wc3/jass-syntax-sublime-textmate
А потом копировать в мапу
На 1.27b там норм проверка встроенная, и всё чётко работает
ответ
Проблема в самой модели, случился какой-то баг и она перестала работать.

23

» WarCraft 3 / CreateTimer

Похожие вопросы:

ответ
особо не смотри туда, смотри по съеденной оперативке в диспетчере задач
ответ
действительно, почему же не работает?
Это вообще никак не влияет. Ты ещё скажи, что set a = a + 1 не работает.

Дело может быть в том, что юнит за 10 секунд разлагается.
немного исправленный код
function Reborn takes nothing returns nothing
    local timer t = GetExpiredTimer()
    local integer s = GetHandleId(t)
    local unit dead = LoadUnitHandle (udg_hash, s, 6)
    call FlushChildHashtable(udg_hash, s)
    call CreateUnit(GetOwningPlayer(dead), GetUnitTypeId(dead), GetUnitX(dead), GetUnitY(dead), GetUnitFacing(dead))
    call DestroyTimer(t)
    set dead = null
    set t = null
endfunction

function Trig_Kill_Unit_Actions takes nothing returns nothing
    local unit dead = GetTriggerUnit()                      //Присваиваем убитого юнита
    local timer t = CreateTimer()                              //Создаём таймер
    local integer s = GetHandleId(t)                         //Узнаём его ID
    call SaveUnitHandle(udg_hash, s, 6, dead)       //Сохраняем юнита 
    call TimerStart(t, 10, false, function Reborn)        //Активируем одноразовый таймер на 10 секунд
    set dead = null
    set t = null
endfunction
код с учётом разложения
function Reborn takes nothing returns nothing
    local timer t = GetExpiredTimer()
    local integer s = GetHandleId(t)
    local player p = LoadPlayerHandle(udg_hash, s, 0)
    local integer id = LoadInteger(udg_hash, s, 0)
    local real x = LoadReal(udg_hash, s, 0)
    local real y = LoadReal(udg_hash, s, 1)
    local real f = LoadReal(udg_hash, s, 2)
    call CreateUnit(p, id, x, y, f)
    call FlushChildHashtable(udg_hash, s)
    call DestroyTimer(t)
    set t = null
    set p = null
endfunction

function Trig_Kill_Unit_Actions takes nothing returns nothing
    local unit dead = GetTriggerUnit()
    local timer t = CreateTimer()
    local integer s = GetHandleId(t)
    call SavePlayerHandle(udg_hash, s, 0, GetOwningPlayer(dead))
    call SaveInteger(udg_hash, s, 0, GetUnitTypeId(dead))
    call SaveReal(udg_hash, s, 0, GetUnitX(dead))
    call SaveReal(udg_hash, s, 1, GetUnitY(dead))
    call SaveReal(udg_hash, s, 2, GetUnitFacing(dead))
    call TimerStart(t, 10, false, function Reborn)
    set dead = null
    set t = null
endfunction
ответ
на жассе - глобальный массив, если таймер один или хештаблица если таких таймеров много
на Lua в 1.31 - есть более удобные способы
ответ
Я полагаю, надо сравнивать вот так, ибо индексация идёт с 1.
GROUP[GetHandleId(unit)][1] == nil
Ну и нужно вот так присваивать.
GROUP[caster_uid][1] = CreateGroup()

23

» WarCraft 3 / lua таблица в таблице

Похожие вопросы:

ответ
Хэштаблицы это костыльнй пережиток jass.
На lua можно же и так
a = {
	b = {
		c = {
			d = function()
				print('work')
			end
		}
	}
}
a.b.c.d()
ответ
ScopteRectuS:
Предполагаю, что делается через какой-то цикл перебором всех элементов таблицы, если элемент является функцией, то запустить.
Правильно предполагаете, но мануалы же никому неинтересны, проже же вопрос задать.
test   = { }
test.a = 123
test.b = true
function test.func0()
	print(0)
end
function test.func1()
	print(1)
end
function test.qab()
	print(2)
end

for k, v in pairs(test) do
	if type(v) == 'function' then
		print(k, ':')
		v()
	end
end
ответ
Документацию то для кого пишут?
DATA = {
	Heroes = {}
}
do
	local PickAHero = CreateTrigger()
	for i = 0, 9 do
		TriggerRegisterPlayerUnitEvent(PickAHero, Player(i), EVENT_PLAYER_UNIT_SELECTED)
	end
	TriggerAddAction(PickAHero, function()
		local hero    = GetTriggerUnit()
		local owner   = GetTriggerPlayer()
		local ownerID = GetPlayerId(owner)
		
		if IsUnitType(hero, UNIT_TYPE_HERO) then
			local x = GetPlayerTeam(owner) == 1 and -7271 or 7271
			local y = GetPlayerTeam(owner) == 1 and -55 or 55
			
			PanCameraToTimedForPlayer(owner, x, x, 0)
			SetUnitX(hero, x)
			SetUnitY(hero, y)
			
			SetUnitOwner(hero, owner, true)
			DATA.Heroes[ownerID] = hero
		end
	end)
end

23

» WarCraft 3 / как выложит свою карту?

Похожие вопросы:

ответ
epicwar.com/maps Вот только надо бы забугорную версию. А так... С вариком ты опоздал, старый он.
ответ
Полезная информация- может пригодиться при создании ролика
фильтры - xgm.guru/p/wc3/filters
камера - www.hiveworkshop.com/threads/cameras.160369 И еще
ответ
Ну только триггерные системы отрядов, была такая...
Вот пример ссылочка
Были и другие, поиск в помощь.
Вот еще ссылка
ответ
Steal nerves:
считаю глупостью заниматься такими вещами. Только чистый jass и понимание, где что утекает (и оптимизация кода).
Тут столько программистов и до сих пор вы не сделали универсальную библиотеку?
сам удивляюсь. Но помнится кто-то делал. Если честно, jass vjass знаю, и я таким не хочу заниматься, меня все устраивает. Даже, если это все будет, новички все равно будут вопросы задавать, инструкции для новичков faq не читают, поиск не юзают (столько вопросов задавали), учиться не хотят. Считаю это бесполезным занятием. Считаю лучше jass, просто менюшками не удобно пользоваться: в них бывает нет всех команд и функции, + это надо все искать по специальным разделам и др.
Суть в том, что это библиотека должна быть не только у тебя, но и у другого юзера. Если ты сделал новыми менюшками триггер, сохранил карту, передал другому человеку. К него должна быть по идее такая же библиотека, иначе не заработает, или не откроет, так как такой функции в редакторе у него нет.
ответ
ALL_Remove = false
чтотооченьважное
ALL_Remove = true
как сложно то было

23

» WarCraft 3 / Подсчёт объектов

Похожие вопросы:

ответ
Нет, не утекает. По крайней мере совсем незначительно. Проверенно многими часами)
ответ
Нинадо бж, это не переменная а функция
local unit u = GetEnumUnit( ) 
ответ
S2I принимает строку в качестве параметра и никак её не изменяет
с чего вдруг он должен создавать новые строки?
I2S создаёт временную строку
если в таблице есть строка равная временной по хэшу то он возвращает строку из таблицы
если в таблице строки нету то он добавляет нашу временную строку в таблицу
т.е. обычный алгоритм хэширования
ответ
  1. Ищите вопросы с GetLocalPlayer в названии.
  2. Ответ дали выше.
ответ
Он лежит на случай если игре необходим данный реф. В РО ты мог иногда видеть необходимое приложение и варианты small, medium и large. Также по возможности спецэффекты и эффекты способностей могут к ней крепиться.
А collission насколько я помню отвечает за выделение или за столкновение летающих юнитов. На всякий случай оставляй, а то мало ли, да и места много не просит.

23

» WarCraft 3 / Нестандартные фундаменты

Похожие вопросы:

ответ
опустить здание вниз под почву спрятав его низ (Пункт - Высота).
Текстуру почвы, она же "ubersplat" таким образом не убрать. Если пустая позиция в РО выдаёт сплат, то дело в модели.

23

» WarCraft 3 / Модели в тумане войны

Похожие вопросы:

ответ
nvc123:
это понятно, мысли вслух просто.
так-то уже ответили, что к чему, что если больше 1 модели не вписать - значит никак
ответ
Ознакомились с правилами сайта и создали вопросы отдельно

23

» WarCraft 3 / Удаление дамми после каста спелла

Похожие вопросы:

ответ
Только дебаффы ядовитых стрел могут стакатся, но даммик обязан иметь дальнюю атаку (при условии что у разных абилок ядовитых стрел будут разные баффы в настройках).
Так же можно юзать таймер и ауру торнадо как написали выше, ну если уж совсем нужен сложный бафф как дефолтный - то тут триггер и немного гемора с мемхаком, зато полный комплект параметров (мигает иконка в статусе перед завершением время действия, бафф спадает с цели после диспела, смерти (у цели крест перерождения или аналог), складывается или не складывается в зависимости от кода).
Пример не рекомендуемый к повторению
function FormatAirportTrainingBar takes integer fp_n returns string
    local string str = ""

    if ( fp_n <= 0 ) then
        return str
    endif

    loop
        exitwhen fp_n < 10
        if ( udg__TempBarStyle == 0 ) then
            set str = str + "''''''''''"
        else
            set str = str + "||||||||||||||||||||"
        endif
        set fp_n = fp_n - 10
    endloop

    loop
        exitwhen fp_n <= 0
        if ( udg__TempBarStyle == 0 ) then
            set str = str + "'"
        else
            set str = str + "||"
        endif
        set fp_n = fp_n - 1
    endloop

    return str
endfunction

function UpdateAirportTrainingBar takes texttag tt, integer fp_nTick, integer fp_nTickMax returns nothing
    local integer nProgress
    local integer nLen
    local string strTT1
    local string strTT2

    if ( tt == null ) then
        call BJDebugMsg( "text tag hDZzRwuZxFQcXqaMPnML null" )
        return
    endif

    set nLen = R2I( I2R( fp_nTickMax ) / 300 * 100 )
    set nProgress = R2I( I2R( nLen ) / fp_nTickMax * fp_nTick )
    set strTT1 = "" + FormatAirportTrainingBar( nProgress )
    set strTT2 = FormatAirportTrainingBar( nLen - nProgress ) + ""
    call SetTextTagText( tt, "|cff0080c0" + strTT1 + "|r|cffff0000" + strTT2 + "|r", 0.023 )
endfunction

function Get_Staff_of_Purification takes unit runner returns item
    set bj_forLoopAIndex = 0
    set bj_lastCreatedItem = null
    
    if GetUnitAbilityLevel( runner, 'Arun' ) == 0 then
        return null
    endif
    
    loop
        exitwhen bj_forLoopAIndex > 5

        set bj_lastCreatedItem = UnitItemInSlot( runner, bj_forLoopAIndex )
        if GetItemTypeId( bj_lastCreatedItem ) == 'I01A' then
            return bj_lastCreatedItem
        endif

        set bj_forLoopAIndex = bj_forLoopAIndex + 1
    endloop

    return bj_lastCreatedItem
endfunction

function Trig_RunnerDamageDetect_Conditions takes nothing returns boolean
    if GetTriggerEventId( ) == EVENT_UNIT_DAMAGED then
        return GetEventDamage( ) > 0.00 and GetEventDamageSource( ) != GetTriggerUnit( ) and GetEventDamageSource( ) != DummyAttacker
    endif
    return true
endfunction

function HealRunner takes nothing returns nothing
    local DamageData dd = GetDataBX( GetExpiredTimer( ) )
    
    call UnitRemoveAbility( dd.attacked, 'AMhp' )
    call SetUnitState( dd.attacked, UNIT_STATE_LIFE, dd.hp )
    
    call RemoveDataBX( dd.trix )
    call DestroyTimer( dd.trix )
    call dd.clear( )
    call dd.destroy( )
endfunction

function Trig_RunnerDamageLock_Actions takes nothing returns nothing
    local TriggerData st = GetDataBX( GetTriggeringTrigger( ) )
    local DamageData dd
    local eventid id = GetTriggerEventId( )
    
    if id == EVENT_GAME_TIMER_EXPIRED and st.id < st.time and st.attacked != null then
        set st.id = st.id + 1
        if GetUnitAbilityLevel( st.attacked, 'Bcyc' ) > 0  or GetUnitAbilityLevel( st.attacked, 'Bcy2' ) > 0 then
            call SetTextTagPos( st.tt, GetUnitX( st.attacked ) - 60.00, GetUnitY( st.attacked ) - 60.00, 585.00 )
        else
            call SetTextTagPos( st.tt, GetUnitX( st.attacked ) - 60.00, GetUnitY( st.attacked ) - 60.00, 80.00 + GetUnitFlyHeight( st.attacked ) )
        endif
        call UpdateAirportTrainingBar( st.tt, 100 - R2I( st.dmg / st.hp * 100.00 ), 100 )
        
    elseif id == EVENT_UNIT_DAMAGED and st.dmg < st.hp then
        set dd = DamageData.create( )
        set dd.trix = CreateTimer( )
        set dd.attacked = st.attacked
        set dd.dmg = GetEventDamage( )
        set dd.hp = GetUnitState( dd.attacked, UNIT_STATE_LIFE )
        
        call SetDataBX( dd.trix, dd )
        call UnitAddAbility( dd.attacked, 'AMhp' )
        call SetUnitState( dd.attacked, UNIT_STATE_LIFE, dd.hp + dd.dmg )
        
        call TimerStart( dd.trix, 0.00, false, function HealRunner )
        
        set st.dmg = st.dmg + dd.dmg
    else
        call UnitRemoveAbility( st.attacked, 'A08L' )
        call UnitMakeAbilityPermanent( st.attacked, false, 'A08L' )
        call DisableTrigger( st.trg )
        call SetTextTagVisibility( st.tt, false )
        
        if not IsUnitDead( st.attacked ) then
            call UnitRemoveAbility( st.attacked, 'B00A' )
        endif
        
        call RemoveSavedInteger( gg_htb_HashData, ExKeySoPRunner, GetHandleId( st.attacked ) )
        
        call st.RemoveTrigger( )
        call st.destroy( )
    endif
    
    set id = null
endfunction

function Trig_Staff_of_Purification_Actions takes nothing returns nothing
    local TriggerData dd
    local unit Runner = GetSpellAbilityUnit( )
    local integer RunnerId = GetHandleId( Runner )
    local item Staff = LoadItemHandle( gg_htb_HashData, RunnerId, ExKeySoP )
    local integer ChargesCount = 0
    local trigger trig = LoadTriggerHandle ( gg_htb_HashData, ExAtomShield, RunnerId )
    local integer pBuff
    
    if Staff == null then
        set Staff = Get_Staff_of_Purification( Runner )
         
        if Staff == null then
            //call DisplayTextToPlayer( Player( CrashPlayerNumber ), 0.00, 0.00, I2Sx( 'A01Q', CrashPlayerNumber ) )
            call BJDebugMsg( DEBUG + I2Sx( 'A02O', 0 ) + INFO )
            return
        endif
        
        call SaveBoolean( gg_htb_HashData, RunnerId, ExKeyHasStaff, true )
        call SaveItemHandle( gg_htb_HashData, RunnerId, ExKeySoP, Staff )
    endif
    
    set ChargesCount = GetItemCharges( Staff )
    
    if ChargesCount < 1 then
        set Runner = null
        set Staff = null
        set trig = null
        return
    endif
    
    call SetItemCharges( Staff, 0 )
    
    if trig != null then // блокирующие урон способности не складываются.
        call TriggerExecute( trig )
        set trig = null
    endif
    
    set dd = TriggerData.create( )
    set dd.attacked = Runner
    set dd.pl = GetOwningPlayer( Runner )
    set dd.trg = CreateTrigger( )
    set dd.trc = TriggerAddCondition( dd.trg, Condition( function Trig_RunnerDamageDetect_Conditions ) )
    set dd.tra = TriggerAddAction ( dd.trg, function Trig_RunnerDamageLock_Actions )
    set dd.tt = CreateTextTag( )
    set dd.hp = 1000.00 * ChargesCount
    set dd.dmg = 1.00
    set dd.id = 0
    set dd.time = 480
    set dd.c = 0.03125
    
    call UnitAddAbility( Runner, 'A07E' )
    call UnitRemoveAbility( Runner, 'A07E' )
    call UnitAddAbility( Runner, 'A08L' )
    call UnitMakeAbilityPermanent( Runner, true, 'A08L' )
    
    call SetDataBX( dd.trg, dd )
    call SaveInteger( gg_htb_HashData, ExKeySoPRunner, RunnerId, dd )
    
    call TriggerRegisterPlayerEvent( dd.trg, dd.pl, EVENT_PLAYER_LEAVE )
    call TriggerRegisterDeathEvent( dd.trg, Runner )
    call TriggerRegisterUnitEvent( dd.trg, Runner, EVENT_UNIT_DAMAGED )
    
    call TriggerRegisterTimerEvent( dd.trg, 0.03125, true )
    
    if GetLocalPlayer( ) == dd.pl or IsPlayerAlly( GetLocalPlayer( ), dd.pl ) then
        call SetTextTagVisibility( dd.tt, true )
    else
        call SetTextTagVisibility( dd.tt, false )
    endif
    
    set pBuff = GetUnitAbility( dd.attacked, 'B00A' ) + 0x90
    set dd.c = TimerGetElapsed( DispTimer )
    call WMem( RMem( pBuff ) + 0x4, mR2I( dd.c + 15.10 ) )
    call WMem( RMem( pBuff ) + 0x8, mR2I( dd.c + 10.408 ) )
    call SetBuffLevel( pBuff - 0x90, ChargesCount )
    call UpdateAirportTrainingBar( dd.tt, 100, 100 )
    
    set Runner = null
endfunction
    
//===========================================================================
function InitTrig_Staff_of_Purification takes nothing returns nothing
    set udg__TempBarStyle = 0
endfunction
Выше пример баффа для предмета, который образует щит блокирующий урон, кол-во заблокированного урона и сколько еще заблокирует щит отображается над головой героя, в виде полоски здоровья (только цвет сине-красный). Так же в статуе есть бафф, один в 1 как бафф дефектных способностей вара, не складывается - новый, перебивает старый. И так далее...

23

» WarCraft 3 / Локализация

Похожие вопросы:

ответ
Как оказалось, ответ был проще. Покопался в файлах карты, нашел wts-файл. В нем все расписано по блоках, причем содержатся все строки, даже описания новых объектов.
Например
STRING 3
Войска: n000 (Dummy), Name (Название (unam))
{
Dummy
}
При локализации карты изменяется этот файл, так как из него берутся значения. Также дела обстоят и с той функцией. Она берет строку из определенного блока. Думаю, вопрос можно закрывать.

23

» WarCraft 3 / Помогите с редактором MDL.

Похожие вопросы:

ответ
KPOKODIL:
Kane Thaumaturg, берешь даммика, ставишь ему модель эффекта, и масштабируй сколько душе угодно
Для некоторых эффектов не рботает
ответ
В War3 Model Editor'e рассчитай границы модели "Редактировать > Рассчитать границы"

23

» WarCraft 3 / Как сделать чтобы модель появилась?

Похожие вопросы:

ответ
BrEd Pitt:
Разбить по строкам, в каждой - одно слово. Там - это в графах анимации, где у зданий стоит stand, upgrade и т.д.
ответ
Я сделал себе с этой карты, у меня все работает
Точно не помню какая из них, выбери ту где Келем бегаешь

23

» WarCraft 3 / Проблема с способностями

Похожие вопросы:

ответ
>2015
>Таймеры с переодичностью 0.01
>Использование больше четырех функций для спелла
ответ
Просто оставлю это и это здесь
ответ
Есть проверка IsUnitDead, где проверяется тип и состояние IsUnitType(u, UNIT_TYPE_DEAD) но никогда не было проблем с проверкой хп.
Так же насколько я помню GetWidgetLife( unit ) > 0.0 или GetUnitState( unit, UNIT_STATE_LIFE ) > 0.405.
ответ
Работает только оригинал , точнее с него настройки на все остальные идут клоны спелла, настройки смотри в опен доте, так то она работ, но вот орб и ннсовместтмость с другими пассивками, это не очень.

23

» WarCraft 3 / Способность босса

Похожие вопросы:

ответ
в статьях всё сказано + есть куча наработок
ответ
Может "Змеиную ловкость" на 100%?
ответ
Для начала читаем правила
Затем, новичок самостоятельно сделать эти способности не сможет, если речь идёт о мультиплеере и оптимизированном исполнении.
И тебе лучше обратиться сюда:

23

» WarCraft 3 / Как сделать количество использования у способности?

Похожие вопросы:

ответ
Drulia_san, Ну да.
Добавляешь аурку - вот тебе баф на юните. Самый простой способ как по мне.
+Можно эффекты настроить, что вполне неплохо. Пока висит фейковый баф(наша аура) - на юните есть эффект.
Через дамми касты я пробовал, но долго+муторно+подключается дамми система = +лаги и местами утечки.
Насчёт таймаута - это уже по самим спеллам, я долго мучался чтобы оно всё работало как надо и не оверлапалось
Вот такой штукой у меня удаляется баф:
public function unitRemoveAbilityandBuffBY(unit u,integer dhv,integer mLv) returns boolean
	boolean b=UnitRemoveAbility(u,dhv)
  	UnitMakeAbilityPermanent(u,false,dhv)
  	UnitRemoveAbility(u,mLv)
	return b

23

» WarCraft 3 / Удаление всех юнитов игрока

Похожие вопросы:

ответ
пауза не предназначена для использования в боевых условиях, вот и ловишь всякое с нею. используй станы обычные, если уж жмет, а для башен и дизарм сгодится обычный

23

» WarCraft 3 / Cjass

Похожие вопросы:

ответ
define <FlushChildHashtable(SYSTEM_HASHTABLE,> = FlushChildHashtable_HSD(
функция FlushChildHashtable_HSD должна принимать лишь 1 параметр (инт)
либо можно так
define FlushChildHashtable(a, b) = {
    if(`a` == "SYSTEM_HASHTABLE"){
        FlushChildHashtable_HSD(b)
    }else{
        FlushChild##Hashtable(a, b)
    }
}
в результате второго варианта FlushChildHashtable(hash, 5) будет заменено на
if ( "hash" == "SYSTEM_HASHTABLE" ) then
	call FlushChildHashtable_HSD(5)
else
	call FlushChildHashtable(hash, 5)
endif
первый вариант предпочтительнее если подобных переменных немного
второй если необходимо передавать в функцию FlushChildHashtable_HSD не только инт но и сам хэштейбл
если же тебе нужно проверять не по названию а по значению то используй 2 вариант
только вместо строк сравнивай сами переменные
ответ
Parom_Harona,
AdicHelper.exe /mappars="путь_к_карте"
ответ
Проблема в Coordinate functions
ответ
ручками =), ну а в конечном итоге всё всё равно в чистый JASS превращается
ответ
Но как переписать код на луа как можно быстрее?
Можно достать из карты war3map.j и сконвертировать в lua. После доработки напильником вполне работоспособно))

23

» WarCraft 3 / Модели видно в отсутствии освещения

Похожие вопросы:

ответ
EvilPenguin, я посмотрел модель, там в анимации поверхностей были изменения цвета.
Удалил на фиг - и всё стало показывать правильно.
FrigatPlay, закрой вопрос уже)
ответ
Возможно, в самом ME отключено освещение, потому модели выглядят ярко (без теней). Нужны скрины моделей в игре и МЕ для сравнения.
Если что, тени в МЕ включаются в Edit -> Properties > Enable Lighting
в русском редакторе: Редактировать -> Свойства > Включить молнии (кек).
ответ
Я использовал такую модель для тумана. Просто белое свечение, ставил в качестве дудада, в редакторе объектов указывал оттенок (255,255,255 — белый, далее соответственно). С освещением ничего не сделаешь, да.

23

» WarCraft 3 / Текст над юнитом

Похожие вопросы:

ответ
Атака оглушением вызывает подобную ерунду. Да и не только.
Например в доте бы вылетало сообщение 0 при атаке имея МКБ - сообщался бы урон, урон от микробаша, если бы выпал и 0.00 от нулевого критического удара.
Решение простое - поставь условие, что полученный урон больше 0.00, тогда только выводить.
ответ
но когда срабатывает одновременно в некоторых случаях текст остается, в чем причина не знаю
причина в бж функциях
избавься от бж и всё норм будет
ответ
Нет, нельзя.
ответ
ровно 99 штук
ответ
8gabriel8:
А в вопросе упомянутое "всплытие" подразумевает, что текст не появляется вообще что ли?
Только при создании текста 2 раз, с первого раза не создается
Ответ найден, простите за беспокойство.
Добавил функцию ((код SetTextTagSuspended(udg_SummUnit[udg_Summ],false) ))
Спасибо за внимание!

23

» WarCraft 3 / Помогите с тригерами

Похожие вопросы:

ответ
Ааа,все посоны,нашел.
ответ
destr:
забудь про эту наработку, она чересчур сложна для понимания простых смертных, да и на 1.26 она вроде не работала. Проще самому сделать инв чем ковыряться в ней (из личного опыта)
В 1.26 пашет,не веришь, сделай проверку карты.2)Думаю понять можна, странно то,что компилятор не видит нужных переменных.
ответ
В событии - применение способности, а в действии - атакованный юнит.
Способность - это не атака.
То есть нужно вместо атакованного юнита написать юнит-цель заклинания.
И удалить утечки (точки).
ответ
как мне накинуть эффект не позволяющий ни исследовать ни производить юнитов на здание
Почему бы просто не поставить это здание на паузу? И потом снять, когда надо будет. Безо всякого ледяного дыхания и создания лишних юнитов.
ответ

23

» WarCraft 3 / Триггеры

Похожие вопросы:

ответ
Вам сюда, господин хороший. Там есть ответы, практически, на все ваши вопросы.
ответ
спасибо, XGM Bot!
Нашел это - xgm.guru/p/blog-nvc123/ur1-3
ответ
Собственные попытки в студию, что не получается?
Напомним - ЭТО НЕ СТОЛ ЗАКАЗОВ, здесь задают вопросы про реализацию тех или иных вопросов, спрашивают про ошибки, оптмизацию, отдельные функции. Я не увидел в вашем вопросе ничего кроме невнятного описания механики способности, " вокргу кого то там огненные столбы возникают, и еще порча"...
ответ
Filius Dei, во вредные советы подъехали...
Русификатор очень поможет тем кто собрался ломануть чужую карту и сделать её мод, прям ваще жир...
Потом нубам вроде сударя не стоит бежать ломать чужую карту, чето там пытатся копировать - это все бесполезно, недавно был похожий вопрос - помогите взломать карту за вознаграждение, карту сломали - ну а дальше что? Он неспособен ничего сделать потому что просто не понимает как?
Играя в некую карту вы мните себя великими балансерами и картоделами, мол да чё там, шяс подправлю пару значений и все будет норм - нет не будет, это не так просто как может показаться, без понимания устройства карты и знания Jass вам нечего там делать, вы тупо ничего не сможете изменить, да даже скопировать и вставить!
Помните что без труда не выловишь и рыбку из пруда, т.е изи способов в 1 кнопку взять и запилить чужую карту так как вам хочется или вдруг стащить всех героев себе в карту нет, а уж теболее не случится так что вам кто то возьмет и все это сделает вам за спасибо...

23

» WarCraft 3 / Выбирается юнит который не выбран

Похожие вопросы:

ответ
quq_CCCP:
Спасибо, понял что надо создавать форс единожды, чтобы утечек не было
Мдаа уж, оказывается все дело в том, что забыл поставить исходные позиции другим игрокам, хорошо хоть проверить догадался, засиделся за редактором
ответ
Вот, должно помочь, но конечно, если героев несколько, то переменная перезаписывается.